home *** CD-ROM | disk | FTP | other *** search
/ Aminet 28 / Aminet 28 (1998)(GTI - Schatztruhe)[!][Dec 1998].iso / Aminet / dev / misc / gms_dev.lha / GMSDev / Source / E / Blitter / Bounceline.e next >
Encoding:
Text File  |  1998-05-15  |  2.7 KB  |  106 lines

  1. /* GMS-example
  2.  * Name:    BounceLine.e
  3.  * Type:    Blitter example (converted from Bounceline.c)
  4.  * Version: 1.0
  5.  * Author:  G. W. Thomassen (0000272e@lts.mil.no)
  6.  * Note:    For code description see the MultiLine.e it's pretty
  7.  *          much the same..
  8.  */
  9.  
  10. MODULE 'gms/dpkernel','gms/dpkernel/dpkernel','gms/graphics/pictures'
  11. MODULE 'gms/files/files','gms/screens','gms/system/register','gms/system/modules'
  12. MODULE 'gms/input/joydata','gms/graphics/screens','gms/graphics/blitter'
  13. MODULE 'gms/blitter'
  14.  
  15. ENUM NONE,ERR_LIB,ERR_SCR,ERR_SMOD,ERR_BMOD,ERR_JOY
  16.  
  17. PROC main() HANDLE
  18.   DEF scr=NIL:PTR TO screen,
  19.       scrmodule=NIL:PTR TO module,
  20.       bltmodule=NIL:PTR TO module,
  21.       sx,sy,ex,ey,dsx,dsy,dex,dey
  22.  
  23.   IF (dpkbase:=OpenLibrary('GMS:libs/dpkernel.library',0))=NIL THEN Raise(ERR_LIB)
  24.  
  25.   IF (scrmodule:=Init([TAGS_MODULE,NIL,       ->screen-module
  26.       MODA_NUMBER,    MOD_SCREENS,
  27.       MODA_TABLETYPE, JMP_AMIGAE,
  28.       TAGEND], NIL))=NIL THEN Raise(ERR_SMOD)
  29.       scrbase:=scrmodule.modbase
  30.  
  31.   IF (bltmodule:=Init([TAGS_MODULE,NIL,     ->blitter-module
  32.       MODA_NUMBER,    MOD_BLITTER,
  33.       MODA_TABLETYPE, JMP_AMIGAE,
  34.       TAGEND], NIL))=NIL THEN Raise(ERR_BMOD)
  35.       bltbase := bltmodule.modbase
  36.  
  37.   IF (scr:=Init([TAGS_SCREEN, NIL,
  38.        GSA_ScrMode, SM_HIRES,
  39.        GSA_Width,   640,
  40.        GSA_Height,  256,
  41.        GSA_Attrib,  SCR_DBLBUFFER,
  42.          GSA_BitmapTags, NIL,
  43.          BMA_AmtColours, 2,
  44.          BMA_Palette,    [PALETTE_ARRAY,2,$000000,$80f0f0],
  45.          TAGEND,         NIL,
  46.        TAGEND],NIL))=NIL THEN Raise(ERR_SCR)
  47.  
  48.   sx:=SlowRandom(scr.width);  dsx:=-1
  49.   sy:=SlowRandom(scr.height); dsy:=2
  50.   ex:=SlowRandom(scr.width);  dex:=3
  51.   ey:=SlowRandom(scr.height); dey:=1
  52.  
  53.   Show(scr)
  54.  
  55.   REPEAT
  56.     Clear(scr.bitmap)
  57.     sx:=sx+dsx
  58.     sy:=sy+dsy
  59.     ex:=ex+dex
  60.     ey:=ey+dey
  61.  
  62.     IF sx<0; sx:=0; dsx:=-dsx; ENDIF
  63.     IF sy<0; sy:=0; dsy:=-dsy; ENDIF
  64.     IF ex<0; ex:=0; dex:=-dex; ENDIF
  65.     IF ey<0; ey:=0; dey:=-dey; ENDIF
  66.  
  67.     IF (sx>(scr.width+1))
  68.       sx:=scr.width-1
  69.       dsx:=-dsx
  70.     ENDIF
  71.     IF (sy>(scr.height+1))
  72.       sy:=scr.height-1
  73.       dsy:=-dsy
  74.     ENDIF
  75.     IF (ex>(scr.width+1))
  76.       ex:=scr.width-1
  77.       dex:=-dex
  78.     ENDIF
  79.     IF (ey>(scr.height-1))
  80.       ey:=scr.height-1
  81.       dey:=-dey
  82.     ENDIF
  83.  
  84.     DrawLine(scr.bitmap,sx,sy,ex,ey,1,$FFFFFFFF)
  85.     WaitAVBL()
  86.     SwapBuffers(scr)
  87.   UNTIL Mouse()=1
  88.  
  89.   Raise(NONE)
  90.  
  91. EXCEPT DO
  92.   IF scr THEN Free(scr)
  93.   IF scrmodule THEN Free(scrmodule)
  94.   IF bltmodule THEN Free(bltmodule)
  95.   CloseDPK()
  96.  
  97.   SELECT exception
  98.     CASE ERR_LIB;  WriteF('Couldn\at open "dpkernel.library"\n')
  99.     CASE ERR_SMOD; WriteF('Couldn\at initialize screen-module\n')
  100.     CASE ERR_SCR;  WriteF('Couldn\at open screen\n')
  101.     CASE ERR_BMOD; WriteF('Couldn\at initialize blitter-module\n')
  102.   ENDSELECT
  103.  
  104.   CleanUp(0)
  105. ENDPROC
  106.